package com.totoro.motan.demo.properties;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * 定义提供给外部调用的接口配置
 * basicService：标识使用的基本配置，引用motan:basicService对象。用于配置所有服务接口的公共配置，减少配置冗余
 * <motan:basicService/> <motan:service/>
 *
 * Created by Niki on 2018/5/23 20:21
 */
@Configuration
@ConfigurationProperties(prefix = "motan.basicservice")
@Getter
@Setter
public class BasicServiceConfigProperties {
    private String id;

    /** 服务暴露的方式，包含协议及端口号，多个协议端口用"," 分隔 */
    private String export;

    /** 服务暴露端口 */
    private String exportPort;

    /** 扩展配置Id */
    private String extConfigId;

    /** 代理类型 */
    private String proxy;

    /** 服务分组, default default_rpc */
    private String group;

    /** 版本, default 1.0 */
    private String version;

    /** 抛出异常, default true */
    private Boolean throwException;

    /** 应用信息, default motan */
    private String application;

    /** 是否共享channel, default false */
    private Boolean shareChannel;

    /** 注册中心的id 列表，多个用“,”分隔，如果为空，则使用所有的配置中心 */
    private String registry;

    /** 设为true，将向logger 中输出访问日志, default false */
    private Boolean accessLog;

    /** 是否开启gzip压缩.只有compressMotan的codec才能支持, default false */
    private Boolean usegz;

    /**
     * 开启gzip压缩的阈值.usegz开关开启，且传输数据大于此阈值时，才会进行gzip压缩。
     * 只有compressMotan的codec才能支持.
     *
     * default 1000
     */
    private Integer mingzSize;

    /** 协议编码, default motan */
    private String codec;

    /** 过滤器配置 */
    private String filter;

    /** 模块信息, default motan */
    private String module;

    /** 最大请求数，0为不做并发限制, default 0 */
    private Integer actives;

    /** 在该注册中心上服务是否暴露, default true */
    private Boolean register;
}
